package com.mengshu.mybatisplus.basic;

import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.mengshu.mybatisplus.utils.UniqueKeyUtils;
import org.springframework.transaction.annotation.Transactional;

public class BasicServiceImpl<M extends BasicMapper<T>, T extends BasicPO> extends ServiceImpl<M, T> implements BasicService<T> {

    @Override
    @Transactional
    public boolean saveForUniqueKey(T t) {
//        try {
//            UniqueKeyUtils.check(t, getBaseMapper());
//        } catch (NoSuchFieldException | IllegalAccessException e) {
//            log.error("通过UniqueKey注解获取Field属性失败", e);
//            return false;
//        }
        return super.save(t);
    }

    @Override
    @Transactional
    public boolean updateForUniqueKey(T t) {
//        try {
//            UniqueKeyUtils.check(t, getBaseMapper());
//        } catch (NoSuchFieldException | IllegalAccessException e) {
//            log.error("通过UniqueKey注解获取Field属性失败", e);
//            return false;
//        }
        return super.updateById(t);
    }


//    @Override
//    @Transactional
//    public boolean saveOrUpdate(T t) {
//        try {
//            UniqueKeyUtils.check(t, getBaseMapper());
//        } catch (NoSuchFieldException | IllegalAccessException e) {
//            log.error("通过UniqueKey注解获取Field属性失败", e);
//            return false;
//        }
//        return super.saveOrUpdate(t);
//    }
//
//    @Override
//    @Transactional
//    public boolean saveOrUpdate(T t, Wrapper<T> updateWrapper) {
//        try {
//            UniqueKeyUtils.check(t, getBaseMapper());
//        } catch (NoSuchFieldException | IllegalAccessException e) {
//            log.error("通过UniqueKey注解获取Field属性失败", e);
//            return false;
//        }
//        return super.saveOrUpdate(t, updateWrapper);
//    }
//
//    @Override
//    @Transactional
//    public boolean update(T t, Wrapper<T> wrapper) {
//        try {
//            UniqueKeyUtils.check(t, getBaseMapper());
//        } catch (NoSuchFieldException | IllegalAccessException e) {
//            log.error("通过UniqueKey注解获取Field属性失败", e);
//            return false;
//        }
//        return super.update(t, wrapper);
//    }

}
